package com.lyz.dataStructure.JianZhiOffer.array;

import java.util.*;

/**
 * @Author:759057893@qq.com Lyz
 * @Date: ${Date} 20:59
 * @Description:
 **/

/*
输入一个正整数数组，把数组里所有数字拼接起来排成一个数，
打印能拼接出的所有数字中最小的一个。例如输入数组{3，32，321}，
则打印出这三个数字能排成的最小数字为321323。

可以看成是一个排序问题，在比较两个字符串 S1 和 S2 的大小时，
应该比较的是 S1+S2 和 S2+S1 的大小，
如果 S1+S2 < S2+S1，那么应该把 S1 排在前面，否则应该把 S2 排在前面。
 */


public class Test28 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

       String s = sc.nextLine();
       String[] st = s.split(" ");
       int[] arr =new int[st.length];
       for(int i=0;i<arr.length;i++){
           arr[i] =Integer.parseInt(st[i]);

       }


        System.out.println(PrintMinNumber(arr));



    }

    public static String PrintMinNumber(int [] numbers) {
        int n;
        String s="";
        ArrayList<Integer> list=new ArrayList<Integer>();
        n=numbers.length;

        for(int i=0;i<n;i++){
            list.add(numbers[i]);//将数组放入arrayList中
        }
        //实现了Comparator接口的compare方法，将集合元素按照compare方法的规则进行排序
        Collections.sort(list,new Comparator<Integer>(){

            @Override
            public int compare(Integer str1, Integer str2) {
                // TODO Auto-generated method stub
                String s1=str1+""+str2;
                String s2=str2+""+str1;

                return s1.compareTo(s2);
            }
        });

        for(int j:list){
            s+=j;
        }
        return s;
    }
}
